﻿using Outpatient.Doman.Hospitalization;
using Outpatient.Doman.SmartClinic;
using Outpatient.ErrorCode;
using Outpatient.Infrastructure;
using OutpatientApi.DTO;

namespace OutpatientApi.Methodimplementation.IServices
{
    /// <summary>
    /// 实现药品管理接口
    /// </summary>
    public interface IPharmacymanagementServices
    {
        /// <summary>
        /// 未打单
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<ApiResult<List<PharmacyDto>>> GetPharmacymanagement(GetPharmacymanagementDto dto);

        /// <summary>
        /// 已打单未发药
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<ApiResult<List<PharmacyDto>>> Themedicinehasnotbeenissued(GetPharmacymanagementDto dto);

        /// <summary>
        /// 实现发药功能
        /// </summary>
        /// <returns></returns>
        Task<ApiResult> Dispensing_medicine(int MedicalCardRegistrationId);

        /// <summary>
        /// 实现打单功能
        /// </summary>
        /// <param name="MedicalCardRegistrationId">医疗卡注册ID</param>
        /// <returns></returns>
        Task<ApiResult> PrintPrescription(int MedicalCardRegistrationId);

        /// <summary>
        /// 查找已发药品信息
        /// </summary>
        /// <returns></returns>
        Task<ApiResult<List<PharmacyDto>>> GeuData();

        /// <summary>
        /// 药品查找方法
        /// </summary>
        /// <param name="dto">查询条件</param>
        /// <returns></returns>
        Task<ApiResult<List<MedicineDto>>> SearchMedicine(SearchMedicineDto dto);

        /// <summary>
        /// 药品出库方法
        /// </summary>
        /// <param name="medicineId">药品ID</param>
        /// <returns></returns>
        Task<ApiResult<object>> MedicineOutbound(int medicineId);

        /// <summary>
        /// 药品入库
        /// </summary>
        /// <param name="dto">药品信息</param>
        /// <returns></returns>
        Task<ApiResult> Create_medicines(Create_medicinesDto dto);

        /// <summary>
        /// 修改药品信息
        /// </summary>
        /// <param name="dto">修改的药品信息</param>
        /// <returns></returns>
        Task<ApiResult> UpdateMedicine(UpdateMedicineDto dto);


    }
}
